C语言中sizeof与strlen区别

您所在的位置:网站首页 sizeof 字符数组 C语言中sizeof与strlen区别

C语言中sizeof与strlen区别

2023-04-10 10:10| 来源: 网络整理| 查看: 265

C

语⾔中

sizeof

strlen

区别

sizeof 

初始的分配的空间⼤⼩,期中

sizeof(unsigned char) = 1;

sizeof(signed char) = 1; 

  

 

 

 

 sizeof(int) = 4;

sizeof(unsigned int) = 4;

sizeof(short int) = 2;

sizeof(unsigned short) = 2;

sizeof(long int) = 4;

sizeof(unsigned long) = 4;

sizeof(float) = 4;

sizeof(double) = 8;

sizeof(long double) = 12;

sizeof(char *)=4;

例如

: char a[5];

int b[5];

sizeof(a) = 5;

sizeof(b) = 20;

strlen

是该数组的长度:如

1

char *  

指针

 

         

strlen

(指针名)

 

 

如果参数是指针则计算该指针指向字符序列的长度。(以

’\0’ 

作为判断标志)例如:

 

 

定义

char *p=“hello world”

strlen

p

=11

,⽽

 sizeof  

p

=4

。可以看到

 strlen

计算的是指针指向的字符串的长度⽽

sizeof 

计算的是指针本⾝所占⽤的内存空

间的⼤⼩。

 

 

2

)数组

 

 

strlen

(数组名)

 

 

如果参数是数组的话,实际传递的是⼀个指针,

strlen 

会按照上⾯处理指针的模

式处理该数组。

 

 

我们可以看下⾯的例⼦:

 

           

char a[]=”hh”; 

            strlen(a); 

 

很显然

strlen 

的结果是

2

。但是如果数组是这样赋值的呢?

 

           

char a[]={‘h’

’h’}; 

            strlen(a); 

 

那么现在

strlen

)的结果⼜是多少呢?这个数就不⼀定了,原因是

 strlen 

会去

计算

地址开始的字符串的长度,由于前⼀种赋值⽅式会将

hh

以字

  

符串的形式

赋值给数组会将字符串结束符

’\0’ 

⼀同赋值,这时

strlen 

就会检查到结束符停⽌

计算,⽽第⼆种复值⽅式是以单个字符的形式赋值没有结束

  

’\0’, 

这时我们⽤

sizeof 

得到的结果是正常的,⽽⽤

 strlen 

由于找不到结束符,会继续的计算直到

找到结束符为⽌。所以这个数是不确定

.

 

 

实例

2:

char a[]="hello";

char b[]={'h','e','l','l','o'};

 strlen(a),strlen(b)

的值分别是多少

?

 



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3